-- 优惠劵id
local voucherId =ARGV[1]

-- 用户id
local userId=ARGV[2]

-- 订单id
local orderId=ARGV[3]

-- 数据库key
local stockKey='seckill:stock:' ..voucherId

-- 订单key
local orderKey ='seckil:order:' .. voucherId

-- 业务脚本
-- 判断库存是否充足
if(tonumber(redid.call('get',stockKey))<=0) then

    return 1

end
-- 判断用户是否下单
if(redis.call('sismember',orderKey,userId)==1) then
    -- 存在说明是重复下单，返回2
    return 2

end

-- 扣库存
redis.call('incrby' ,stockKey,-1)

-- 下单保存用户
redis.call('sadd',orderKey,userId);

-- 发送消息到队列中
redis.call('xadd','stream.order','*','userId'
,userId,'voucherId',voucherId,'id',orderId)


return 0

